package stack;
import java.util.LinkedList;
import java.util.ListIterator;
/**
 * 链式栈的实现：
 * 栈 原来的底层数据结构为数组，将其底层换为LinkedList即是链式栈
 * */
public class MyStack implements IStackOperation{
    LinkedList<Integer> stack;
    //构造方法
    public MyStack() {
        stack = new LinkedList<>();
    }

    @Override
    public void push(int val) {
        //调用尾插
        this.stack.add(val);
    }

    @Override
    public int pop() {
        //
        int old = this.stack.getLast();
        this.stack.removeLast();
        return old;
    }

    @Override
    public int peek() {
        return this.stack.getLast();
    }

    @Override
    public boolean empty() {
        return this.stack.size()==0;
    }
}
/** 实现起来较为简单，直接调用LinkedList方法即可
 * 由于LinkedList底层是双向链表，并且定义了 last head用于保存头尾节点
 * 故尾插、尾删、获取尾节点等操作时间复杂度均是O（1）
 * */
